目前的炸彈可以連發,來製作炸彈道具數量,讓炸彈有限,直接在Player程式加裝炸彈數,開啟PlayerControl
//序列化一個炸彈數3
[SerializeField] int bomb=3;
//等等顯示還有幾個炸彈的數量
[SerializeField] Text boomNumber = default;
private void Update()
{
horizontalMove = Input.GetAxisRaw("Horizontal");
//持續顯示炸彈數量
boomNumber.text = "" + bomb;
//transform.Translate(Vector3.up * 1 * Time.deltaTime, Space.World);
}
public void Boom()
{
//如果炸彈數大於0才能發射
if (bomb > 0)
{
//每次發射減一炸彈數
bomb -= 1;
//創造炸彈
Instantiate(boom, transform.position, Quaternion.identity);
}
}
//碰撞觸發
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "EnemyBullet")
{
hp -= 5f;
hpBar.fillAmount = hp / hpMax;
if (hp <= 0)
{
anim.SetBool("die", true);
dieWindow.SetActive(true);
Destroy(gameObject, 0.5f);
}
}
//如果碰到標籤叫"boom"的執行
if(collision.tag =="boom")
{
//炸彈數加一
bomb += 1;
//刪除碰撞到的物件
Destroy(collision.gameObject);
}
}
製作炸彈數量的文字框
把炸彈數量的文字框裝在Player的BoomNumber上面,這樣等等才會顯示炸彈數量
把素材庫裡的道具炸彈拿出來,放上collider記得勾isTrigger後製作成預置物
記得把炸彈的標籤改成boom
再來就是讓敵人死後噴道具炸彈讓玩家撿,開啟敵機程式EnemyAI,簡單寫幾行就好
//序列化一個物件(炸彈道具)(等等在unity要賦予此物件)
[SerializeField] GameObject boom = null;
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "PlayerBullet")
{
hp -= 5f;
anim.SetTrigger("hit");
if (hp <= 0)
{
//死掉時必定產生炸彈道具
Instantiate(boom, transform.position, Quaternion.identity);
Destroy(gameObject);
}
}
}
最後把炸彈道具的預置物,放到敵機身上即可
應該運用同原理可以製作吃金幣,運用Boss的機率寫法可以讓掉落機率不一樣,這邊就不一一介紹,有興趣的可以自行嘗試看看,現在應該是可以稍微製作出一些屬於自己的遊戲內容囉~